package projetbi_dao;

import java.sql.Connection;

import tools.*;

/**
 * Projet BI - M2 FIC 2012-2013
 *
 * @author Jef, Tuan-Long, William, Mohamed
 */
/**
 *
 * Classe abstraite générique dont vont hériter les DAOs correspondant à chaque
 * table dans la base de données.
 *
 */
public abstract class DAO<T> {

    public Connection connect = ConnexionMySQL.getInstance();

    /**
     * Permet de récupérer un objet via son id
     *
     * @param id L'id de l'objet
     * @return L'objet en question
     */
    public abstract T find(int id);

    /**
     * Permet de créer une entrée dans la base de données par rapport à un objet
     *
     * @param obj L'objet que l'on veut ajouter dans la base
     */
    public abstract T create(T obj);

    /**
     * Permet de mettre à jour les données d'une entrée dans la base
     *
     * @param obj L'objet dont on veut mettre les données à jour
     */
    public abstract T update(T obj);

    /**
     * Permet la suppression d'une entrée de la base
     *
     * @param int id que l'on veut supprimer dans la base
     */
    public abstract void delete(int id);

    /**
     * Retourne la valeur maximale des id de la table en question
     *
     * @param
     */
    public abstract int getMax();
}
